1. Field of the Invention
This application relates to a method of facilitating the individual control of the threads of a multithreaded controlled application, such as a user application, by a controlling application, such as a debugger application, for debugging or other purposes.
2. Description of the Related Art
Computer operating systems--the software that interfaces between user applications and the hardware and performs the basic supervisory functions in a computer system--are well known in the art. Many modern operating systems allow for the use of multiple threads within a process, or application. A multithreaded application is defined as a program using more than one thread of control to perform its work. (The terms "process" and "application" are used interchangeably in this specification to refer to one or more threads sharing a common address space.) A. S. Tanenbaum, Modern Operating Systems, (1992), incorporated herein by reference, describes several modern operating systems generally, as well as threads in particular at pp. 507-23.
A particular example of an operating system supporting multithreaded applications is the IBM MVS/ESA operating system with its recently introduced OpenEdition MVS extension. The OpenEdition MVS extension allows applications written to the IEEE POSIX 1003.1, 1003.2 and 1003.4a (draft) standards to run on a hardware-software platform made up of an IBM System/390 computer and the MVS/ESA operating system. (IBM, OpenEdition, MVS/ESA and System/390 are trademarks of IBM Corporation.) Further information on the OpenEdition MVS extension may be found in the following publications, which are incorporated herein by reference:
Ault, "Fork Clone Address Space Implementation on MVS", IBM Technical Disclosure Bulletin, vol. 35, no. 6, pp. 363-67 (Nov. 1992); PA1 Ault, "Interoperability Between MVS and POSIX Functions", IBM Technical Disclosure Bulletin, vol. 35, no. 6, pp. 383-88 (Nov. 1992); PA1 Ault et al., "Cross-Address Space Control Function", IBM Technical Disclosure Bulletin, vol. 36, no. 10, pp. 591-95 (Oct. 1993); PA1 Introducing OpenEdition MVS, IBM Publication No. GC23-3010-00 (1993); PA1 MVS/ESA Support for IEEE POSIX Standards: Technical Presentation Guide, IBM Publication No. GG24-3867-00 (1993).
As noted above, the OpenEdition MVS extension of the MVS/ESA operating system allows for the use of multiple threads within a process. In MVS terms, a thread can be thought of as a task. Multiple threads thus equate to the use of multiple MVS tasks within an MVS address space. OpenEdition MVS user applications use mutexes and condition variables to perform multithreaded work. Mutexes are simple locks, and condition variables provide controlled access to shared storage using mutexes.
Debugger applications that work with multithreaded user applications, such as OpenEdition MVS user applications, need support that allows the debugging of such multithreaded applications. For example, the constructs of mutexes and condition variables referred to above are unique to multithreaded applications and require unique support to allow debugging of applications using these constructs.
Previous systems have solved the problem of debugging multithreaded applications by directly looking at whatever control blocks were needed. No service was provided to allow general multithreaded debugging.